// 全局拦截
import axios from 'axios'
import store from '../store/index'
import router from '../router/index'

axios.defaults.baseURL = '/api/' // axios请求页面里就可以省略api,必须写在service的外面

// 创建一个axios实例
const service = axios.create({
  // 请求超时时间
  timeout: 3000
})

// 请求的拦截器  interceptors: 拦截器 request：请求的拦截
service.interceptors.request.use(
  config => {
    // console.log(config) // 获取请求头的参数
    if (store.state.login.token) {
      config.headers.token = store.state.login.token // token 保存到本地
    }
    return config
  },
  err => console.log(err)
)

service.interceptors.response.use(
  response => {
    if (response.status == '200') {
      const data = response.data
      if (data.code == -1) {
        // 登录过期，需要重新登录，清空vuex的token和localStorage的token，并跳转登录页面
        store.state.login.token = '' // 清空vuex的token
        router.replace({ path: '/login' }) // 跳转到登陆页面
      }
      return data
    }
  },
  err => console.log(err)
)

export default service // 输出service
